epub2 库
在电子书开发领域,处理 EPUB 格式是一项常见任务。epub2 是一个强大的Node.js模块,专门用于解析 EPUB 电子书文件。本文将详细介绍 epub2 库的使用方法,帮助开发者轻松集成 EPUB 解析功能到自己的项目中。
项目首页,这个库是对 epub 库的 fork 版本。
安装:npm install epub2 zipfile
包导入方法
epub2支持多种导入方式,你可以根据自己的项目需求选择合适的方式:
// CommonJS
const EPub = require("epub2/node");
// ES6 模块 (TypeScript)
import * as EPub from 'epub2/node';
// 或者
import EPub from 'epub2';
import { EPub } from 'epub2';
创建 EPub 实例
要开始解析EPUB文件,首先需要创建一个EPub实例:
const epub = new EPub(epubfile, imagewebroot, chapterwebroot);
参数说明:
epubfile
: EPUB文件的路径imagewebroot
: 图片URL的前缀,默认为 "/images/"chapterwebroot
: 章节URL的前缀,默认为 "/links/"
异步解析
epub2 提供了异步方法来创建和解析EPUB文件:
// 使用 async/await
let epub = await EPub.createAsync(epubfile, imagewebroot, chapterwebroot);
// 或使用 Promise
EPub.createAsync(epubfile, imagewebroot, chapterwebroot)
.then(function (epub) {
// 处理epub对象
})
.catch(function (err) {
console.log("ERROR:", err);
});
访问元数据
解析完成后,你可以轻松访问EPUB文件的元数据:
console.log(epub.metadata.title);
console.log(epub.metadata.creator);
可用的元数据字段包括:
creator
: 作者creatorFileAs
: 作者(文件中的形式)title
: 标题language
: 语言代码subject
: 主题date
: 创建日期description
: 描述
访问目录
epub2 提供了两种方式来访问电子书的结构:
方式一:flow
: 实际的章节列表
flow 是 epub 对象的一个属性,保存实际的章节列表(TOC 只是一个指示,可以链接到章节文件内的 # url)
epub.flow.forEach(function(chapter) {
console.log(chapter.id);
});
加载章节 getChapter
需要章节 id
方式二:toc
: 目录(Table of Contents)
toc 是 epub 对象的一个属性,指示 TOC 的标题/url 列表。需要使用 href
属性检测实际章节及其 ID
epub.toc.forEach(function(chapter) {
console.log(chapter.title, chapter.href);
});
获取章节内容
你可以使用getChapter
方法来获取特定章节的内容:
epub.getChapter(chapter_id, function(error, text){
if (!error) {
console.log("Chapter content:", text);
} else {
console.error("Error loading chapter:", error);
}
});
获取图片
使用getImage
方法来获取EPUB中的图片:
epub.getImage("image1", function(error, img, mimeType){
if (!error) {
console.log("Image data:", img);
console.log("MIME type:", mimeType);
} else {
console.error("Error loading image:", error);
}
});
获取其他文件
对于EPUB中的其他文件(如CSS),可以使用getFile
方法:
epub.getFile("css1", function(error, data, mimeType){
if (!error) {
console.log("File data:", data);
console.log("MIME type:", mimeType);
} else {
console.error("Error loading file:", error);
}
});
注意事项
- epub2目前只支持UTF-8编码的电子书。
- 如果你在使用过程中遇到 Promise 相关的问题,可以通过设置
EPub.libPromise
来更改使用的 Promise 库。
本文作者:Maeiee
本文链接:epub2 库
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!